<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>示例12</title>
    <script>
        const getJSON = function (url) {
            // 使用 Promise 对象封装异步 Ajax 请求 
            const promise = new Promise(function (resolve, reject) {
                const handler = function () {
                    if (this.readyState !== 4) {
                        return;
                    }
                    if (this.status === 200) {
                        // 异步请求结果为 200 则表示请求成功，调用 resolve 方法 
                        resolve(this.response);
                    } else {
                        // 非 200 表示异常请求，调用 reject 方法，返回错误 
                        reject(new Error(this.statusText));
                    }
                };
                const client = new XMLHttpRequest();
                client.open("GET", url);
                client.onreadystatechange = handler;
                client.responseType = "json";
                client.setRequestHeader("Accept", "application/json");
                client.send();
            });
            return promise;
        };
        // 调用 getJSON 方法，传入 URL，返回 Promise 对象，使用 then 来处理结果 
        getJSON("./newslist.json").then(function (json) {
            console.log('result json: ', json);
        }, function (error) {
            console.error('出错了', error);
        });
    </script>
</head>

<body></body>

</html>